package com.foreknow.oop2;

/**
 * 员工管理类
 * 什么时候用返回值类型：
 * 1.如果我们要查询到的是数据是一个员工对象，那么这个方法就应该返回Employee类型
 * 2.如果我们要查询的数据是多条件信息(多个对象)，那么这个方法的返回值类型Employee[]
 * 3.如果是添加员工信息，这个方法的参数一定是一个Employee对象，返回类型可有可无
 */
public class EmployeeManager {

  private Employee[] emps;//定义一个数组容器
  private int count; //整数的默认值0

  public EmployeeManager() {
    emps = new Employee[5];
  }

  //添加员工信息（参数：Employee employees   返回值类型 void）
  //在这个方法中要做什么事情？ 要将参数中的Employee对象保存到一个数组容器中
  public void addEmployee(Employee employee){
    //要将参数中的Employee对象保存到一个数组容器中
    if(count<5){
      emps[count] = employee;
      count++;
      System.out.println("添加成功......");
    }else {
      System.out.println("添加失败......");
    }
  }

  //根据id查询某一个员工的信息
  //在这个方法中我们要做什么？思路：对数组进行遍历
  public Employee getQueryById(String id) {
    //变量一定要先初始化然后才能使用
    Employee e = null;
    //1.对emps数组遍历
    for(int i = 0;i<count;i++){
      //2.判断数组中的元素(Employee对象)的id是否与参数id值相等，如果相等就要将数组中这个元素取出来。
      if(emps[i].getId().equals(id)){
         e = emps[i];
      }
    }
    return e;
  }

  //查询所有员工信息
  public Employee[] getAll() {
    Employee[] employees = new Employee[5];
    //1.对emps数组进行遍历，每遍历一次就要将这个元素从数组中获取出来，然后放到一个新的数据中
    for(int i = 0;i<emps.length;i++){
      employees[i] = emps[i];
    }
    return employees;
  }


  public static void main(String[] args) {
    EmployeeManager employeeManager = new EmployeeManager();

    Employee emp = new Employee();//一个对象表示一个人的信息
    emp.setId("1000");
    emp.setName("tom");
    emp.setSalary(4000);
    emp.setDept("market");


    employeeManager.addEmployee(emp);//将emp对象传递(赋值)给employee
    employeeManager.addEmployee(emp);//将emp对象传递(赋值)给employee
    employeeManager.addEmployee(emp);//将emp对象传递(赋值)给employee
    employeeManager.addEmployee(emp);//将emp对象传递(赋值)给employee
    employeeManager.addEmployee(emp);//将emp对象传递(赋值)给employee
    employeeManager.addEmployee(emp);//将emp对象传递(赋值)给employee


  }


}
